Fix up managed dnd
authorMatthias Clasen <mclasen@redhat.com>
Sat, 11 Nov 2017 12:46:59 +0000 (07:46 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 11 Nov 2017 12:50:11 +0000 (07:50 -0500)
Since commit 6c56d04cee23d3340cf7cf08756c610efe9ccdab,
we were doing some calls twice in the managed dnd case,
leading to double drops.

gtk/gtkdnd.c

index 40c14eeb4b4d8d95c05caabb28fb618b531250ee..3caf43a375aa0c031e29efb1289e09a57fcf8ae0 100644 (file)
@@ -1905,7 +1905,9 @@ gtk_drag_drop (GtkDragSourceInfo *info,
       if (info->icon_window)
         gtk_widget_hide (info->icon_window);
 
-      gdk_drag_drop (info->context, time);
+      if (!gtk_drag_is_managed (info->widget))
+        gdk_drag_drop (info->context, time);
+
       info->drop_timeout = gdk_threads_add_timeout (DROP_ABORT_TIME,
                                           gtk_drag_abort_timeout,
                                           info);
@@ -2195,7 +2197,8 @@ gtk_drag_cancel_internal (GtkDragSourceInfo *info,
                           guint32            time)
 {
   gtk_drag_end (info, time);
-  gdk_drag_abort (info->context, time);
+  if (!gtk_drag_is_managed (info->widget))
+    gdk_drag_abort (info->context, time);
   gtk_drag_drop_finished (info, result, time);
 }